package paneles;

import arreglos.EmpleadoArrayList;
import arreglos.ProductoArrayList;

import com.toedter.calendar.JDateChooser;
import com.toedter.calendar.JSpinnerDateEditor;
import constantes.Constantes;
import entidades.Empleado;
import entidades.Producto;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import principal.Principal;
import util.Utilitarios;
import util.Validaciones;

public class PanelModificarEmpleado extends JPanel implements ActionListener {

	private JLabel lblAgregarEmpleadoTitulo;
	// ///Datos del formulario
	private JLabel lblCodigo;
	// Datos de persona
	private JLabel lblNombreEmpleado;
	private JLabel lblApePaternoEmpleado;
	private JLabel lblApeMaternoEmpleado;
	private JLabel lblDNI;
	private JLabel lblDireccionEmpleado;
	private JLabel lblFechaNacimientoEmpleado;
	private JLabel lblTelefono;
	private JLabel lblEmail;

	// Datos de clase empleado
	private JLabel lblLogin;
	private JLabel lblClaveSistema;
	private JLabel lblPerfilEmpleado;
	private JLabel lblEstadoEmpleado;

	private JTextField txtCodigo;

	private JTextField txtNombreEmpleado;
	private JTextField txtApePaternoEmpleado;
	private JTextField txtApeMaternoEmpleado;
	private JTextField txtDNI;
	private JTextField txtDireccionEmpleado;
	private JDateChooser txtFechaNacimientoEmpleado;
	private JTextField txtTelefono;
	private JTextField txtEmail;

	private JTextField txtLogin;
	private JPasswordField txtClaveSistema;
	private JComboBox cboPerfilEmpleado;
	private JComboBox cboEstadoEmpleado;

	private JButton btnAgregarEmpleado;
	// private JButton btnLimpiarEmpleado;
	private JButton btnConsultarEmpleado;
	private JButton btnCancelar;
	private JButton btnLimpiarEmpleado;
	private JButton btnModificarEmpleado;
	private JInternalFrame modificaEmpleado;

	public PanelModificarEmpleado(Principal pAppletPrincipal,
			JInternalFrame pAgregarCliente) {

		this.modificaEmpleado = pAgregarCliente;

		lblAgregarEmpleadoTitulo = new JLabel("Modificar empleado", JLabel.CENTER);
		lblAgregarEmpleadoTitulo.setBounds(0, 10, 500, 35);
		lblAgregarEmpleadoTitulo.setForeground(Color.red);
		lblAgregarEmpleadoTitulo.setOpaque(true);
		// lblAgregarClienteTitulo.setBackground(Color.white);
		lblAgregarEmpleadoTitulo.setFont(new Font("Dialog", Font.BOLD, 18));
		this.add(lblAgregarEmpleadoTitulo);

		lblCodigo = new JLabel("Codigo:", JLabel.RIGHT);
		lblCodigo.setBounds(0, 50, 210, 25);
		lblCodigo.setForeground(Color.red);
		lblCodigo.setOpaque(true);
		lblCodigo.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblCodigo);

		lblNombreEmpleado = new JLabel("Nombres:", JLabel.RIGHT);
		lblNombreEmpleado.setBounds(0, 75, 210, 25);
		lblNombreEmpleado.setForeground(Color.red);
		lblNombreEmpleado.setOpaque(true);
		// lblNombreCliente.setBackground(Color.white);
		lblNombreEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblNombreEmpleado);

		lblApePaternoEmpleado = new JLabel("Apellido paterno:", JLabel.RIGHT);
		lblApePaternoEmpleado.setBounds(0, 100, 210, 25);
		lblApePaternoEmpleado.setForeground(Color.red);
		lblApePaternoEmpleado.setOpaque(true);
		// lblApePaternoCliente.setBackground(Color.white);
		lblApePaternoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblApePaternoEmpleado);

		lblApeMaternoEmpleado = new JLabel("Apellido materno:", JLabel.RIGHT);
		lblApeMaternoEmpleado.setBounds(0, 125, 210, 25);
		lblApeMaternoEmpleado.setForeground(Color.red);
		lblApeMaternoEmpleado.setOpaque(true);
		// lblApeMaternoCliente.setBackground(Color.white);
		lblApeMaternoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblApeMaternoEmpleado);

		lblDNI = new JLabel("DNI:", JLabel.RIGHT);
		lblDNI.setBounds(0, 150, 210, 25);
		lblDNI.setForeground(Color.red);
		lblDNI.setOpaque(true);
		// lblTelefonoCliente.setBackground(Color.white);
		lblDNI.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblDNI);

		lblDireccionEmpleado = new JLabel("Direccion:", JLabel.RIGHT);
		lblDireccionEmpleado.setBounds(0, 175, 210, 25);
		lblDireccionEmpleado.setForeground(Color.red);
		lblDireccionEmpleado.setOpaque(true);
		lblDireccionEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblDireccionEmpleado);

		lblFechaNacimientoEmpleado = new JLabel("Fecha nacimiento:",
				JLabel.RIGHT);
		lblFechaNacimientoEmpleado.setBounds(0, 200, 210, 25);
		lblFechaNacimientoEmpleado.setForeground(Color.red);
		lblFechaNacimientoEmpleado.setOpaque(true);
		lblFechaNacimientoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblFechaNacimientoEmpleado);

		lblTelefono = new JLabel("Telefono:", JLabel.RIGHT);
		lblTelefono.setBounds(0, 225, 210, 25);
		lblTelefono.setForeground(Color.red);
		lblTelefono.setOpaque(true);
		lblTelefono.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblTelefono);

		lblEmail = new JLabel("Email:", JLabel.RIGHT);
		lblEmail.setBounds(0, 250, 210, 25);
		lblEmail.setForeground(Color.red);
		lblEmail.setOpaque(true);
		lblEmail.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblEmail);

		lblLogin = new JLabel("Login:", JLabel.RIGHT);
		lblLogin.setBounds(0, 275, 210, 25);
		lblLogin.setForeground(Color.red);
		lblLogin.setOpaque(true);
		lblLogin.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblLogin);

		lblClaveSistema = new JLabel("Clave", JLabel.RIGHT);
		lblClaveSistema.setBounds(0, 300, 210, 25);
		lblClaveSistema.setForeground(Color.red);
		lblClaveSistema.setOpaque(true);
		lblClaveSistema.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblClaveSistema);

		lblPerfilEmpleado = new JLabel("Perfil", JLabel.RIGHT);
		lblPerfilEmpleado.setBounds(0, 325, 210, 25);
		lblPerfilEmpleado.setForeground(Color.red);
		lblPerfilEmpleado.setOpaque(true);
		lblPerfilEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblPerfilEmpleado);

		lblEstadoEmpleado = new JLabel("Estado", JLabel.RIGHT);
		lblEstadoEmpleado.setBounds(0, 350, 210, 25);
		lblEstadoEmpleado.setForeground(Color.red);
		lblEstadoEmpleado.setOpaque(true);
		lblEstadoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(lblEstadoEmpleado);

		txtCodigo = new JTextField();
		txtCodigo.setBounds(215, 50, 100, 20);
		txtCodigo.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtCodigo);

		txtNombreEmpleado = new JTextField();
		txtNombreEmpleado.setBounds(215, 75, 200, 20);
		txtNombreEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtNombreEmpleado);

		txtApePaternoEmpleado = new JTextField();
		txtApePaternoEmpleado.setBounds(215, 100, 200, 20);
		txtApePaternoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtApePaternoEmpleado);

		txtApeMaternoEmpleado = new JTextField();
		txtApeMaternoEmpleado.setBounds(215, 125, 200, 20);
		txtApeMaternoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtApeMaternoEmpleado);

		txtDNI = new JTextField();
		txtDNI.setBounds(215, 150, 200, 20);
		txtDNI.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtDNI);

		txtDireccionEmpleado = new JTextField();
		txtDireccionEmpleado.setBounds(215, 175, 200, 20);
		txtDireccionEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtDireccionEmpleado);

		txtFechaNacimientoEmpleado = new JDateChooser(null, null, null,
				new JSpinnerDateEditor());
		txtFechaNacimientoEmpleado.setBounds(215, 200, 200, 20);
		txtFechaNacimientoEmpleado.setFont(new Font("Dialog", Font.BOLD, 12));
		/*
		 * Establece la fecha maxima de seleccion para el año de nacimiento
		 */
		Date date = Utilitarios.FechaMaximaDeSeleccion();
		txtFechaNacimientoEmpleado.setMaxSelectableDate(date);
		txtFechaNacimientoEmpleado.setDate(date);
		this.add(txtFechaNacimientoEmpleado);

		txtTelefono = new JTextField();
		txtTelefono.setBounds(215, 225, 200, 20);
		txtTelefono.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtTelefono);

		txtEmail = new JTextField();
		txtEmail.setBounds(215, 250, 200, 20);
		txtEmail.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtEmail);

		txtLogin = new JTextField();
		txtLogin.setBounds(215, 275, 200, 20);
		txtLogin.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtLogin);

		txtClaveSistema = new JPasswordField();
		txtClaveSistema.setBounds(215, 300, 200, 20);
		txtClaveSistema.setFont(new Font("Dialog", Font.BOLD, 12));
		this.add(txtClaveSistema);

		cboPerfilEmpleado = new JComboBox();
		cboPerfilEmpleado.setBounds(215, 325, 200, 20);
		cboPerfilEmpleado.addItem("Administrador");
		cboPerfilEmpleado.addItem("Vendedor");
		cboPerfilEmpleado.addActionListener(this);
		this.add(cboPerfilEmpleado);

		cboEstadoEmpleado = new JComboBox();
		cboEstadoEmpleado.setBounds(215, 350, 200, 20);
		cboEstadoEmpleado.addItem("Deshabilitado");
		cboEstadoEmpleado.addItem("Habilitado");
		cboEstadoEmpleado.addActionListener(this);
		this.add(cboEstadoEmpleado);

		// Botones

		btnModificarEmpleado = new JButton("Grabar");
		btnModificarEmpleado.setBounds(150, 375, 90, 30);
		btnModificarEmpleado.addActionListener(this);
		btnModificarEmpleado.setEnabled(false);
		this.add(btnModificarEmpleado);

		btnLimpiarEmpleado = new JButton("Limpiar");
		btnLimpiarEmpleado.setBounds(250, 375, 90, 30);
		btnLimpiarEmpleado.addActionListener(this);
		this.add(btnLimpiarEmpleado);

		btnConsultarEmpleado = new JButton("Buscar");
		btnConsultarEmpleado.setBounds(320, 49, 90, 25);
		btnConsultarEmpleado.addActionListener(this);
		this.add(btnConsultarEmpleado);

		btnCancelar = new JButton("Cancelar");
		btnCancelar.setBounds(350, 375, 90, 30);
		btnCancelar.addActionListener(this);
		btnCancelar.setEnabled(false);
		this.add(btnCancelar);

	}

	private void LimpiarDatos() {
		txtApeMaternoEmpleado.setText("");
		txtApePaternoEmpleado.setText("");
		txtClaveSistema.setText("");
		txtCodigo.setText("");
		txtDireccionEmpleado.setText("");
		txtDNI.setText("");
		txtEmail.setText("");
		txtLogin.setText("");
		txtNombreEmpleado.setText("");
		txtTelefono.setText("");

		cboEstadoEmpleado.setSelectedIndex(0);
		cboPerfilEmpleado.setSelectedIndex(0);

	}

	private void HabilitarControles(boolean value) {
		btnLimpiarEmpleado.setEnabled(value);
		btnModificarEmpleado.setEnabled(value);
		btnCancelar.setEnabled(value);
		txtApeMaternoEmpleado.setEnabled(value);
		txtApePaternoEmpleado.setEnabled(value);
		txtClaveSistema.setEnabled(value);
		txtCodigo.setEnabled(value);
		txtDireccionEmpleado.setEnabled(value);
		txtDNI.setEnabled(value);
		txtEmail.setEnabled(value);
		txtFechaNacimientoEmpleado.setEnabled(value);
		txtLogin.setEnabled(value);
		txtNombreEmpleado.setEnabled(value);
		txtTelefono.setEnabled(value);
		cboEstadoEmpleado.setEnabled(value);
		cboPerfilEmpleado.setEnabled(value);

	}

	private void BuscarDatosEmpleado() {
		Empleado empleado = null;
		EmpleadoArrayList empleadoArrayList = null;
		try {
			empleado = new Empleado();
			empleado.setCodigo(txtCodigo.getText().trim());
			empleadoArrayList = new EmpleadoArrayList();
			empleado = empleadoArrayList.BuscarDatosEmpleadoPorCodigo(empleado);
			int codigo = 0;
			try {
				codigo = Integer.parseInt(empleado.getCodigo());
			} catch (Exception e) {
			}

			if (codigo > 0) {

				HabilitarControles(true);

				txtCodigo.setEnabled(false);
				btnConsultarEmpleado.setEnabled(false);
				btnCancelar.setEnabled(true);

				txtNombreEmpleado.setText(empleado.getNombre());
				txtApePaternoEmpleado.setText(empleado.getApellidoPaterno());
				txtApeMaternoEmpleado.setText(empleado.getApellidoMaterno());
				txtDNI.setText(empleado.getDni());
				txtTelefono.setText(empleado.getTelefono());
				txtDireccionEmpleado.setText(empleado.getDireccion());
				txtEmail.setText(empleado.getEmail());
				txtLogin.setText(empleado.getLogin());
				txtClaveSistema.setText(empleado.getClaveAccesoSistema());

				Date date = Utilitarios.ConvertirCadenaFecha(empleado.getFechaNacimiento());
				txtFechaNacimientoEmpleado.setDate(date);

				cboEstadoEmpleado.setSelectedIndex(Integer.parseInt(empleado.getEstadoEmpleado()));
				cboPerfilEmpleado.setSelectedIndex(Integer.parseInt(empleado.getPerfilEmpleado()));
				
				
			} else {
				Utilitarios.MostrarMensajeAlerta(modificaEmpleado,
						"No se encontro ningun empleado");
			}
		} catch (Exception ex) {
			System.out.println(ex);
		}

	}

	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == btnConsultarEmpleado) {
			BuscarDatosEmpleado();
		}
		if (e.getSource() == btnModificarEmpleado) {
			ModificarDatosEmpleado();
		}
		if (e.getSource() == btnLimpiarEmpleado) {
			LimpiarDatos();
		}
		if (e.getSource() == btnCancelar) {

			LimpiarDatos();
			HabilitarControles(false);
			txtCodigo.setEnabled(true);
			btnConsultarEmpleado.setEnabled(true);

		}
	}

	private void ModificarDatosEmpleado() {
		Empleado empleado = null;
		EmpleadoArrayList empleadoArrayList = null;
		try {

			empleado = new Empleado();

			empleado = new Empleado();
			empleado.setCodigo(txtCodigo.getText().trim());
			empleado.setNombre(txtNombreEmpleado.getText().trim());
			empleado.setApellidoPaterno(txtApePaternoEmpleado.getText().trim());
			empleado.setApellidoMaterno(txtApeMaternoEmpleado.getText().trim());
			empleado.setDni(txtDNI.getText().trim());
			empleado.setTelefono(txtTelefono.getText().trim());
			empleado.setDireccion(txtDireccionEmpleado.getText().trim());
			empleado.setEmail(txtEmail.getText().trim());
			empleado.setLogin(txtLogin.getText().trim());
			empleado.setClaveAccesoSistema(txtClaveSistema.getText().trim());

			Date date = txtFechaNacimientoEmpleado.getDate();
			String fecha = Utilitarios.FormatearFechaCadena(date);
			empleado.setFechaNacimiento(fecha);

			empleado.setEstadoEmpleado(cboEstadoEmpleado.getSelectedIndex()
					+ "");
			empleado.setPerfilEmpleado(cboPerfilEmpleado.getSelectedIndex()
					+ "");

			empleadoArrayList = new EmpleadoArrayList();

			empleadoArrayList.ModificarEmpleado(empleado);

			Utilitarios.MostrarMensajeInformacion(modificaEmpleado,
					"Se modifico el empleado correctamente");
			LimpiarDatos();
			HabilitarControles(false);
			txtCodigo.setEnabled(true);
			btnConsultarEmpleado.setEnabled(true);

		} catch (Exception ex) {
			System.out.println(ex);
		}
	}

	private void LimpiarDatosEmpleado() {
		txtNombreEmpleado.setText("");
		txtApePaternoEmpleado.setText("");
		txtApeMaternoEmpleado.setText("");
		txtDNI.setText("");
		txtDireccionEmpleado.setText("");
		txtTelefono.setText("");
		txtLogin.setText("");
		txtClaveSistema.setText("");
		txtEmail.setText("");
		txtNombreEmpleado.requestFocus();
	}

}
